1. Field of the Invention
The present invention pertains to computer systems and computer system buses. More particularly, this invention relates to supporting multiple overlapping address spaces on a shared bus in a computer system.
2. Background
Modem computer systems typically have multiple agents coupled together via a system bus. Typically, the agents are integrated circuit chips with multiple pins coupling each agent to the bus. These agents may include, for example, a processor(s), a memory device(s), a mass storage device(s), etc. In order for the computer system to operate properly, these agents should be able to effectively communicate with each other via the bus.
Different agents in a computer system and different locations within these agents (e.g., a register or other memory location) are typically accessed via a particular address. The range of addresses which can be used by a particular agent is typically referred to as the address space of that agent. A typical range for address spaces used by modem computer systems is from 8 to 44 bits. As technology has advanced, the address space being supported by particular agents has increased in order to accommodate a wide range of agents and memory locations.
Often, newer agents support a larger address space than older agents. However, in order to increase flexibility in computer system design and provide backwards compatibility, it would be beneficial to provide a mechanism which supports smaller address spaces as well as newer, larger address spaces. The smaller and larger address spaces typically overlap. For example, the first 8-bit space of a 16-bit address space and the entire space of an 8-bit address space are the same, and thus are referred to as overlapping. Additionally, some newer agents (for example, input/output devices) may have no need to use the larger address spaces. Therefore, using additional pins on these agents in order to couple them to the bus needlessly increases the cost and physical size of the agents.
One solution to supporting multiple address spaces is to use different requests for different address spaces. For example, a request in an 8-bit address space and a request in a 16-bit address space would be two different commands, using different request lines on the bus. However, this solution greatly increases the number of control lines required on a bus, because a significant number of additional control lines is needed for each of the different address spaces which are supported. Thus, it would be beneficial to provide a mechanism for supporting different address spaces which does not require a significant number of additional control lines.
As will be described in more detail below, the present invention provides a method and apparatus for supporting multiple overlapping address spaces on a shared bus to achieve these and other desired results which will be apparent to those skilled in the art from the description that follows.